路遙知碼力,日久練成精- 只要在程式之路鑽研的夠深,便能夠充分發揮程式碼的力量; 練習的日子夠久,便能夠練成寫出精簡代碼的能力。
大家好,我是心原一馬,內心原來一心喜歡打程式碼。
本系列文不只是講解高級語法的教科書叫大家背誦,
亦會帶出解決問題的思維,如何換種思考方式,
使得複雜問題簡單化,
也希望讓讀者有「哦,原來這個問題還能這樣解。」的豁然開朗吧。
若您是其它語言的讀者,說不定也會因為見識到python語法的精簡,
而萌生「那我也來試著專精python看看好了」的念頭呢。
「路遙知碼力,日久練成精」這系列的文章向大家介紹如何寫出一手漂亮的python代碼,
使得程式碼行數少又不失可讀性
我的python老師說很多人第一個語言不是學python,
把寫其它語言的習慣帶進python中了。
例如我們如果想要宣告一個初始值為1~100的陣列(array),
如果你學過C語言,你可能會這樣寫,
先宣告一個大小為100的陣列,
初始值設為0,再用for 迴圈去改它的值,如下:
int main()
{
int arr[100]={0};
int idx=0;
for(idx=0; idx<100;idx++){
arr[idx]=idx+1;
}
}
如果你學過C++,你可能會先宣告一個空的vector,
再用for迴圈把1~100的數字依序加進去,如下:
int main()
{
vector<int> v;
for(int i=1; i<=100;i++){
v.push_back(i);
}
}
於是當你學了python之後,
知道python的list是類似C語言的array,
類似C++的vector時,
你很容易這樣去寫code:
L=[]
for i in range(1,101):
L.append(i)
看似好像就只是不必寫C語言的main()函數而已嘛,
好像也沒精簡到哪裡去。
但其實我們有以下優雅的寫法 (後面篇章會再詳談這是什麼東西):
L = [i for i in range(1,101)]
一行解決,看起來是不是漂亮多了?
在python語言中,
因為有很有好用的內建函數及一些精簡的語法,
使得在其它語言中需要寫很多行的程式,
到了python往往都是一行解決的事情。
試想,如果我們想要「把x的值連加8次」,
用for迴圈來寫當然也是可以做的,如下:
x= 100
result = 0
for i in range(8):
result = result + x
可是其實「把x的值連加8次」可以簡單用「x乘以8」來表達,邏輯就可以精簡成這樣:
result = 8*x
這樣程式是不是簡單多了?
需注意本系列文談的程式碼精簡同時會兼顧程式的可讀性,
未必字打的愈少程式就愈精簡,
例如把變數名稱命名為a,b,c,d,… ,
這樣無法從變數名字看出涵義,
並不在需要精簡的範圍內。
當然,要把python程式寫到精簡又好懂也並不是能夠一步登天就可以學成的,
故本系列文命名為「路遙知碼力,日久練成精」,
想用短短程式碼實現豐富的功能?
想學將問題化繁為簡的思維模式嗎?
想試試看python與其它語言與眾不同的地方?
歡迎一同踏向探索python之路吧。